home *** CD-ROM | disk | FTP | other *** search
- ___________ _____
- ***********\ /******b.
- ***********:\ . /:********b )
- . '-._···d**::\ /·:***·::"**B
- † '-d**P:··\ /·::*** ··:"**b .
- d**P:·:· \ /···:***· ··:*** .
- @**(:·:· · \ / ·::*** ··::***
- . † "**b:·· *****···:***· ··:***
- "**b:·· ***** ·::*** ··::***
- _..··'"***::·· \···:***· ··:*** †
- . **b:·· ·***:.' \·::*** ··:d**P
- ***b:·:d**P· \·:*** ::d**B
- † "********@' . \:********P
- . "******P \******P' . .
- ~~~ ~~~~~
- . ___ ___ ___
- /\__\ ___ /\__\ /\ \
- /%%| | /\ \ /%%| | /%%\ \ .
- . /%|%| | \%\ \ /%|%| | /%/\%\ \
- /%/|%|__|__ /%%\__\%/|%| |_/%%\~\%\ \
- /%/ |%%%%\__\ /%/\/__// |%| /\__\\%\ \%\__\
- \/__/~~/%/ //%/ / \/__|%|/%/ /~\%\ \/__/
- ) /%/ /%%/__/ |%/%/ /%\ \%\__\
- /%/ / \%\__\ |%%/ / \%\ \/__/ †
- . /%/ / \/__/ . /%/ / \%\__\
- \/__/ \/__/ \/__/
- . ___ ___ ___ ___ ___ ___ ___
- /\ \ /\__\ /\ \ /\ \ /\ \ /\ \ /\ \
- /%%\ \ /%/ / /%%\ \ /%%\ \ /%%\ \ /%%\ \ /%%\ \
- /%/\%\ \%/ / /%/\%\ \%/\%\ \%/\%\ \%/\%\ \%/\%\ \
- _\%\~\%\ \ _<_ /_/\~\%\ \\~\%\ \\~\%\ \\~\%\ \\~\%\ \
- /\ \%\ \%\__\| |/\__\\ \%\__\\ \%\__\\ \%\__\\ \%\__\\ \%\__\
- \%\ \%\ \/__/| /%/ /%\ \/__/%\ \/__/%\/%/ /%\ \/__/%\/%/ /
- \%\ \%\__\/%|/%/ / \%\__\\ \%\__\ \%%/ / \%\__\|%|%%/ /
- \%\/%/ /|%/%/ /%\ \/__/%\ \/__/ \/__/%\ \/__/|%|\/__/
- \%%/ / |%%/ / \%\__\ \%\__\ \%\__\ |%| |
- \/__/ \/__/ \/__/ \/__/ . \/__/ \|__|
-
-
- 3D Minesweeper
- ~~ ~~~~~~~~~~~
- Author: A.W.Garrard
- Version: 2.03 (14-Dec-94)
- Purpose: Brain damage
-
- Double-click on !3DMine to play
-
- The classic game Minesweeper, now in 3-D
- A game for people of all ages who are as bored as I was when I
- wrote it
-
- ·NO tacky sound effects
- ·NO high speed, animated graphics (getting bored of them, yuh?)
- ·NO advanced GUI to baffle beginners
-
- ·ARE YOU PREPARED FOR THE INTRIGUE of working out why I could be
- bothered to write this thing in the first place?
- ·CAN YOU STAND THE TENSION of having people stand behind you,
- shouting "No, not THAT one!"?
- ·CAN YOUR HEART TAKE THE STRAIN of the caffeine intake from all
- the coffee you can drink while the screen re-draws?
-
- Having said that, you might enjoy it, so give it a go.
-
- * Title MINE SWEEPER text style based on a font by Lennert Stock
-
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- Important note:
- Risc PC users with low resolution monitors should pay attention
- to the section on customising their monitor definition file.
- This game will not work in low resolution on a Risc PC without
- this change being made.
-
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- Game mechanics
- ~~~~ ~~~~~~~~~
- This program has on-line help, but for people who would rather
- read this in their favourite text viewer before use, details
- of the game are provided below...
-
- Gameplay: it's normal minesweeper, only 3-D.
-
- If that doesn't help, here is a brief synopsis of minesweeper:
-
- Minesweeper is a game which is played on a grid of cells. Each
- cell may or may not contain a mine. To start with, you do not
- know the contents of the cells.
-
- The aim of the game is to flag all the cells which contain
- mines. If you think a cell does not contain a mine, you can
- uncover it. If you uncover a cell which contains a mine, you
- lose the game. If the cell which is uncovered is safe, it will
- change to show you how many cells adjacent to it (including
- diagonals) contain mines. You cannot clear a cell which has
- been flagged or queried.
-
- If you change your mind about whether a flagged cell contains a
- mine, you can un-flag it again. You only have as many flags as
- there are mines, and the game finishes when you have no flags
- left. If you have all the mines flagged at this point, you win,
- otherwise (i.e. you have a flag wrongly placed) you lose.
-
- You can also place a query on a cell. You cannot flag a cell
- which has been queried, or query a cell which has been flagged.
- The only purpose of a queried cell is to help you calculate
- whether other cells may contain mines in a complex arrangement-
- queried cells show up amber, and have no other effect on the
- game. Cells can be un-queried when you have done with them, and
- you may query as many cells as you like.
-
- Cells which are not yet uncovered are shown in blue
- Cells which are queried are shown in amber
- Cells which are flagged are shown in red
- Cells which have been uncovered are shown as follows:
- No adjacent mine - cell not plotted (invisible)
- Adjacent mines - cell plotted in black with red outline and
- with a letter in red indicating number of mines: A=1, B=2 etc.
-
- There are readouts on the main screen showing the coordinates
- of the cell currently displayed under the mouse pointer, the
- number of mines around this cell, and the number of flags
- which the player has left.
-
- The three-dimensional game grid may be rotated at will. Because
- the grid is 3-D, it is possible for some cells to be completely
- obscured by others. To remedy this, it is possible to request
- that only a portion of the grid be displayed by specifying a
- range of coordinates to be displayed. The help screen indicates
- the current numerical values of this range, and the grid box
- shown on the help screen encloses only the current range, thus
- providing a more graphical indication. The limits may be varied
- by use of the keyboard, with keys increasing or decreasing the
- upper and lower limits of the range along each axis. The whole
- grid is always displayed at the start of a game.
-
- The game uses quite a large amount of memory, and, especially
- for large grids, re-draw may take a few seconds (an hourglass
- percentage is displayed indicating progress). The grid will
- update faster if there are less cells to display - to increase
- speed, uncover cells as soon as you can (empty cells draw faster
- than unknown ones) and use QwErTy (or equivalents) to reduce the
- size of the displayed grid. Use of the help screen is also
- recommended to speed up rotations and resizing.
-
- When the player uncovers a cell which is not adjacent to any
- mines, the program will clear the grid out from that cell until
- the boundaries of all uncovered regions are again adjacent to
- mines. (This saves time, and would be trivial to do yourself,
- since all the cells around such a cell are by definition safe).
-
- When starting, the player is asked for a grid size and no. of
- mines. The number of mines cannot exceed the number of cells
- in the grid, excluding corner points (no mine will be placed
- in a corner cell).
-
- The x coordinate of the grid size must be a multiple of 8 (for
- storage reasons).
-
- It is recommended that the game is first played on an 8x5x5 grid
- with 5-10 mines until you are familiar with the controls.
-
-
-
- Mouse buttons function as follows:
-
- _____________________________
- | | |
- | Flag/ | |
- | unflag | |
- |_________| |
- | | |
- ———————————| Query/ | |
- ———————————| unquery | |
- |_________| |
- | | |
- | Uncover | |
- | cell | |
- |_________|___________________|
-
-
-
- Select - uncover cell
- Menu - query cell (for user calculation purposes)/unquery it
- Adjust - flag/unflag cell
-
- In addition, there the following short-cuts are available:
-
- Shift+Select on a lettered cell which has as many flags next to
- it as it has mines clears all remaining cells around the cell
- Shift+Adjust on a lettered cell which has as many blank cells
- next to it as there are mines left to be flagged around it
- flags all remaining blank cells around the cell
-
- These short-cuts are best understood by experiment.
-
-
- Default keys function as follows:
-
- q moves the x coord lower bound down
- Q moves the x coord lower bound up
- w moves the x coord upper bound down
- W moves the x coord upper bound up
- e moves the y coord lower bound down
- E moves the y coord lower bound up
- r moves the y coord upper bound down
- R moves the y coord upper bound up
- t moves the z coord lower bound down
- T moves the z coord lower bound up
- y moves the z coord upper bound down
- Y moves the z coord upper bound up
-
- z rotates the grid to the left slowly (about the y axis)
- Z rotates the grid to the left quickly
- x rotates the grid to the right slowly
- X rotates the grid to the right quickly
- ' rotates the grid up slowly (about the x axis)
- " (@ on a Risc PC) rotates the grid up quickly
- / rotates the grid down slowly
- ? rotates the grid down quickly
- o rotates the grid to the left slowly (about the z axis)
- O rotates the grid to the left quickly
- p rotates the grid to the right slowly
- P rotates the grid to the right quickly
-
- The above keys may be redefined, and the settings saved, but
- saved settings must be explicitly loaded since the program
- will default to the above settings each time it is run.
-
- <space> swaps between the main and help screens
- <Esc> restarts and <Ctrl>+<Esc> exits the game
-
- The current keys are displayed on the help screen.
-
- The disc from which the game was loaded must be left in the
- drive while playing - it will be accessed at the start of each
- new game. This is not an attempt at anti-piracy, merely a
- consequence of the way the program works; a large enough ADFS
- buffer will suffice instead, or the game may be run from a
- ram disc.
-
- Files are provided in the !3DMine directory to support The
- Serial Port joystick interface. Please read the LeadEdSrc source
- file to see how to use joysticks with the game. To open the
- !3DMine directory and get access to these files, hold down
- <Shift> and double-click on the !3DMine application. Once the
- joystick file has been loaded, the game should be run as normal.
- The Vertical Twist joystick interface does not work (at time of
- writing) on the Risc PC - this is nothing to do with !3DMine,
- and the author will be pleased to hear from anyone who has got
- the joystick interface to work on the new machine.
-
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- Machine requirements:
- ~~~~~~~ ~~~~~~~~~~~~
- The program should run on any 32-bit Acorn machine with RISC OS
- (although RISC OS 3's ColourTrans will make use of dithering).
- I have not been able to test the program on any OS versions
- except 3.5, 3.11 and 2.00 (low resolution only), or on any
- machines with less than 4Mb, but can't see any reason why it
- shouldn't work on any others. The latest version has only been
- tested on a RISC OS 3.5 machine, but no changes have been made
- which should compromise functionality on earlier computers.
-
- Although memory usage improved radically in version 1.14, the
- high resolution version of the game still requires a 2Mb machine
- (although it will fit in one far more comfortably than previous
- versions). The low resolution version will run on a 1Mb RISC-OS2
- machine, but modules may need to be unplugged to get it to run
- on a 1Mb RISC-OS3 machine. The program will not run on an A305
- which has not been expanded. For similar reasons, effort has not
- been expended to get the program to work on Arthur, especially
- since Arthur can't display the right screen mode. Due to the
- speed (or lack of it) at which the program runs, an ARM3 (or
- later) is recommended, but then one always is. There have been a
- lot of code optimisations made in the hope that one is not
- required but is a luxury.
-
- In high resolution mode, the program runs in mode 27 (640x480,
- 16 colour VGA) and so should work on VGA, SVGA and MultiSync
- monitors, and on the A4's LCD display - although on the latter
- (and other monochrome displays), colours will obviously be
- harder to distinguish between, especially since I did not have
- an A4 available when palette choosing. Owners of such machines
- may have to resort to the read-out at the top of the screen to
- tell them what is under the mouse pointer; anybody who can
- provide a suitable alternative palette with more contrast on the
- A4, but still provides intuitive colours on a colour display,
- please let me know and I will include it in the next update.
-
- Although the game may be played in 'low resolution mode', the
- display quality suffers significantly. The low resolution option
- was only written for compatibility, since it allows the !3DMine
- to be run on a 1Mb machine (just) as well as just on a normal
- monitor. The game is playable in this state, but the high-
- resolution version is recommended where available (the layout of
- the user interface is better and the cells are much clearer and
- less lumpy). Mode 27 was chosen as the next most 'standard'
- resolution which most monitor types can display (but 'normal' &
- high-res mono monitors can't). The low resolution option runs
- in a custom mode 112, which is mode 12 but with the resolution
- tweaked to 640x240.
-
- If the program is run on a machine with a low resolution monitor
- or if insufficient memory is available to run in high resolution
- mode then the program will automatically run in low resolution
- mode. It is possible to force the game into low resolution mode
- by holding down <Return> when the program is run. The low-res
- version of the game does have slightly faster update, so if the
- user is willing to forfeit display quality in return for this
- speed increase, this facility may be useful (although personally
- I wouldn't think it was worth it).
-
- On a hi-res mono monitor (type 2), the program will probably
- attempt to run in a different mode to the one it thinks it is
- running in, and therefore even if it doesn't crash it will not
- be playable. C'est la vie.
-
- The program could have been written to allow various screen
- modes, and even to run in the desktop. The reasons it wasn't,
- in increasing order of importance, are:
- a) It would slow it down and require even more memory.
- b) It would stop me using shadow screens etc. which would mean
- more complex coding.
- c) I couldn't be bothered (I have a degree to do too, you know).
-
-
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- Risc PC screen modes and customising monitor definition files:
- ~~~~ ~~ ~~~~~~ ~~~~~ ~~~ ~~~~~~~~~~~ ~~~~~~~ ~~~~~~~~~~ ~~~~~
-
- On a Risc PC, the game attempts to run in 640x480, 16 colours.
- If there is insufficient memory for this, if this mode is not
- defined in the monitor definition file currently in use (e.g.
- the machine is in use on a low-resolution monitor), or if the
- <Return> key is pressed when the program is run, the game will
- try to use a 640x240 16 colour mode. This section provides
- information on that mode - if you never intend to run the game
- in low-resolution mode, you can ignore the rest of this section.
-
- If you use an AKF50, AKF52, AKF60 or AKF85 monitor definition
- file, modified versions providing definitions for the customised
- 640x240 low resolution mode which !3DMine uses are provided in
- the !3DMine.3DMMDF directory distributed with this game; shift-
- double-click on the !3DMine application to open its directory.
- To install these definition files, copy this directory into the
- $.!Boot.Resources.Configure.Monitors on your hard disc (shift-
- double-click on the !Boot application to open it, then double-
- click on the other directories to open them). Then double click
- on !Boot to configure the new MDFs. Click on the screen icon in
- the configuration window, then, from the menu to the right of
- 'Monitor type' in the Screen window, choose the appropriate MDF
- out of 'AKF50 3DM', 'AKF52 3DM', 'AKF60 3DM' & 'AKF85 3DM'. Then
- click on 'Set' in the Screen window. Your computer should now be
- correctly set up so that !3DMine can use its custom modes. If at
- any point you change which monitor definition file you use,
- remember to change back to this one before running !3DMine in
- low-resolution mode. If you can use the provided definition
- files, you can afford to ignore the rest of this section.
-
- If you have a different type of monitor, you may have to make
- some changes to the definition file you do use, because of the
- non-standard 640x240 mode which the game uses.
-
- This 640x240 mode is unlikely to be defined as default in your
- monitor definition file. Hence, if you wish to use !3DMine in
- low resolution mode, you must make some changes to your MDF. To
- do this, look in the $.!Boot.Resources.Configure.Monitors folder
- on your hard disc - shift-double-click on the !Boot application
- to open it, and double-click on the other directories to open
- them. In it are a number of directories containing monitor
- definition files, which are simply text files which tell the
- computer what signals to send the monitor. You need to find the
- file which contains the monitor definition which you use - for
- example, if you are using the standard AKF60 monitor then the
- monitor definition file which you use may be called 'AKF60' in
- the Acorn directory. When you have found this file, load it
- into a text editor (e.g. !Edit). If you have the correct file,
- it should contain the following section near the top, possibly
- after some lines beginning with # characters:
-
- file_format:1
- monitor_title:nnnnnnnn
-
- Where nnnnnnnn is the name of your monitor, which appears in the
- title of the mode selector window. Change the nnnnnnnn to give
- some indication that this file has been modified for !3DMine -
- for example, 'Acorn AKF60' could be called 'Acorn AKF60 3DM'.
- Then go down through the file until you find the line:
-
- # 640 x 250
-
- or:
-
- # 640 x 256
-
- (preferably the former). There may be another comment after the
- numbers. Copy the section between this line and the line which
- reads 'endmode' (inclusive) to the end of the file and change
- the 250 or 256 to read 240. Next you need to change the line
- which reads:
-
- y_res:n
-
- (where n is 250 or 256 depending on which definition you have
- copied) to read:
-
- y_res:240
-
- Finally you need to look at the v_timings line. It will contain
- something of the format:
-
- v_timings:s,bp,tb,scr,bb,fp
-
- where s,bp,tb,scr,bb and fp are numbers telling the computer
- how many scan lines make up the sync, back porch, top border,
- screen, bottom border and front porch respectively. You do not
- need to know the details of how these work.
-
- The scr value needs to be changed to read 240, but in order to
- ensure that the mode still works, you will need to increase the
- bottom and top borders so that the total number of scan lines
- stays the same. To do this, if 'scr' was originally 250, add
- 5 to tb and bb (to evenly distribute the extra 10 lines between
- the two borders and keep the screen centred). If 'scr' was 256,
- add 8 to tb and bb.
-
- As an example, taking the standard AKF60 definition file, the
- copied section originally read:
-
- # 640 x 250 (70Hz - Modes 3,11,14)
- # Low band
- startmode
- mode_name:
- x_res:640
- y_res:250
- pixel_rate:25175
- h_timings:88,22,22,640,22,6
- v_timings:2,109,0,250,0,88
- sync_pol:2
- endmode
-
- and should be changed to
-
- # 640 x 240 (70Hz - Modes 3,11,14) <- 250 changed to 240
- # Low band
- startmode
- mode_name: <- this is blank
- x_res:640
- y_res:240 <- 250 changed to 240
- pixel_rate:25175
- h_timings:88,22,22,640,22,6
- v_timings:2,109,5,240,5,88 <- borders 5, screen 240
- sync_pol:2
- endmode
-
- If there is anything following the ':' on the mode_name line,
- the extra should be removed.
-
- There is nothing special about the 640x256 and 640x250 mode
- definitions - you can base your new mode on any original mode,
- but since these are standard modes which are likely to exist and
- be correctly adjusted for your monitor, these are the suggested
- sizes to use. Note that the borders cannot be negative, so the
- original mode must be at least 240 pixels vertically. You do not
- have to start with a mode which is 640 pixels horizontally, but
- you must pad out the corresponding borders and make the other
- changes needed to alter the screen width, so unless you know
- what you are doing, this is not recommended.
-
- When you have finished making your changes, save the monitor
- definition file under a new name (so that it does not write over
- the old one, in case there is a problem). You will then have to
- run the !Boot application to get the configuration options. When
- you have done this, click on 'Screen' and from the menu to the
- right of 'Monitor type', choose the monitor definition file
- which you have created. Click on 'Set' in the Screen window, and
- the computer will know about the screen mode which it needs for
- !3DMine.
-
- If there is a problem with the new definition file, one of three
- things will happen. Firstly, the configure application may
- complain when it tries to scan for new monitor definition files
- (and the new definition will not appear in the menu). Secondly,
- !3DMine may not be able to find the screen mode it needs, and
- will refer you back to this document. Finally, the mode may be
- defined but your monitor will not be able to display it, and
- instead produce a distorted picture or power-down. Press <Ctrl>+
- <Esc> twice and then <Space> to quit !3DMine and return to the
- desktop in this last case. Check the definition file again -
- there should not be a circumstance under which these changes
- will not work. For more details on changing monitor definition
- files, you are referred to my article in the October '94 edition
- of Archive magazine on 'Creating Monitor Definition Files'.
-
-
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- Revision history:
- ~~~~~~~~ ~~~~~~~
- Conceived Feb 18th 1994 (may have been 17th)
-
- Version 1.00 Feb 19th
- ·complete in BASIC, but no auto-clear
-
- Version 1.01 Feb 21st
- ·auto-clear about cells non-adjacent to a mine added
- ·final print-out of maze added
-
- Version 1.02 Feb 21st
- ·m/c 'z-buffer' implemented to replace BASIC - much faster
- ·auto-clear amended (now does diagonals, as original)
-
- Version 1.03 Feb 21st
- ·added rotation about z axis (on request) -
- may need guide for rotation to be added later (see 1.06)
-
- Version 1.04 Feb 22nd
- ·minor bug fix -
- now detects #surrounding mines correctly for larger mazes
-
- Version 1.05 Feb 23rd
- ·minor alteration - now all rotations are relative to screen
- axes rather than those of the original grid
-
- Version 1.06 Feb 25th-26th
- ·help screen added - also provides faster interaction
- ·auto-clear algorithm changed (now slower, but handles 16x16x16)
- ·crude timing added
-
- Version 1.07 Feb 27th
- ·auto-clear improved - quite a lot faster, but still slower
- than original
- ·timing now ignored redraw time
- ·restart option provided
-
- Version 1.08 March 1st
- ·fancy graphics on win/lose and startup provided
-
- Version 1.09 March 2nd
- ·help screen at start added, graphics improved (slightly)
-
- Version 1.10 March 2nd
- ·help screen at start updated; bug on return fixed
- ·<Esc> during game now returns to start screen (quits on start)
- ·grey shading of uncovered cells removed, since it wasn't really
- noticeable and was only slowing the program down
- ·indication of reason for re-draw added
- (mainly to avoid confusion over Caps Lock)
-
- Version 1.11 March 3rd
- ·depth cueing on final maze printout added
- ·facility to see main maze display from final printout added
-
- Version 1.12 March 12th
- ·VDU 24 and range clipping on drawn cells after single cell
- update (drastic update speed improvement)
- ·final screen key done
- ·first release version
-
- Version 1.13 March 18th
- mostly bug fixes from version 1.12 (which was rushed):
- ·fixed bug on clipping (now clears rectangle in z-buffer - this
- only matters where a single cell which is not adjacent to any
- mines is cleared and nothing else is plotted over where it was;
- but it might have caused a crash *BLUSH* - and in a released
- version too!)
- ·clearing for text improved (doesn't leave spare text on screen)
- ·now notes cells which are transparent, so it's not necessary to
- count surrounding mines for uncovered cells on every redraw -
- another significant speed increase on redraw, when the grid has
- been partially or mostly cleared
-
- Version 1.14 March 29th
- lots of improvements the day after a HENSA upload - NOT clever
- ·code for writing to z-buffer greatly improved -
- now more convoluted, but faster (removed lots of MULs)
- ·z-buffer is now 16-bits deep, not 32 (not much point having 32
- bit buffer when you can only have 4097 values in it) - could
- be 13 bits (not 12 :-( ) or 12+1, but would require far more
- coding; probably still wouldn't fit on 1Mb machine (comes just
- short of a meg with screen memory, but you need the OS) so I
- won't bother - I've just saved 600k, after all
- ·final grid display altered to show more specifics
- ·tested with !VDUTask (works, surprisingly, but not very stable)
-
- Version 1.15 March 31st
- ·grid representation changed (now memory block, not int. array)
- - facilitates future m/coding (e.g. clearing code)
- ·grid clearing code now in assembler - MUCH faster, even if a
- bit badly coded (delay now < 1 sec vs 45 secs for 16x16x16 in
- version 1.14, on a 25MHz A5000; redraw still 30 secs tho'.)-: )
- ·slight improvement to help screen GUI
- ·<ESC> while exploding now quits (<ESC><ESC> is fast exit)
-
- Version 1.15LR March 31st
- ·as version 1.15, but runs on 'normal' monitors in custom mode
- ·selector program automatically chooses between 1.15 and 1.15LR
- (based on monitor type)
-
- Version 1.16 April 6th
- ·combines 1.15 and 1.15LR into one program to allow for easier
- update (so I don't have to change two programs each time)
- ·matrices for position calculation are now integer, using fixed-
- point, in preparation for more heavily ARM-coded releases -
- N.B. initial loss of accuracy, but 15 binary places seems to be
- enough (10 isn't); could go back and only convert to fixed-
- point at final stage, if necessary
-
- Version 2.00 April 14th
- ·now uses floating point for the position calculation again, but
- converts to integer for plotting (retains accuracy, but allows
- use of machine-code routines)
- ·plotting routines are now machine-coded - significant speed up
- ·cells now plotted with sprites, not circles - a bit faster
- ·keys now user-definable (with, unfortunately, a bit of naughty
- code to retain settings)
- ·short-cuts (shift-adjust and shift-select on lettered cells)
- added, having found a RISC-OS version of Minesweeper which has
- this facility
- ·program no longer needs MemAlloc, and assigns itself suitable
- amounts of memory if it can (not quite perfectly, and there are
- better ways of doing it, but I only have Arthur PRMs so I claim
- ignorance)
- ·the program will now generate a new copy of the custom screen
- mode module if it needs one and can't find it, although it does
- still need to save it in the same directory as the program
- ·!RunImage is now self-contained, and the !Run file now does
- nothing significant
- ·<Esc> now always returns to the start of the program; quit has
- been changed to <Ctrl>+<Esc> (twice to quit quickly)
- ·joystick files provided (only keyboard equivalents)
-
- Version 2.01 April 19th
- ·bug fix (I'd accidentally typed : not + on range setting)
- ·bug fix - can now have true maximum number of mines for a grid
- ·hourglass added to mine filling routine (can be slow)
-
- Version 2.02 December 3rd
- ·now uses @ instead of " on Risc PCs (to compensate for changed
- keyboard layout) as default
- ·handles correct modes (low resolution and custom 640x480) on
- Risc PCs
- ·help on creating appropriate Risc PC monitor definition files
- and sample files for default distribution MDFs provided
- ·found out how to do proper memory allocation - but since the
- existing code works, it hasn't been changed
-
- ·Help file updated December 13th - now has prettier title and
- mouse button diagram; also changed my address to home (since
- I won't be at college next year)
-
- Version 2.03 December 14th
- ·Help file updated to include stereogram and ACTUALLY TELL YOU
- HOW TO PLAY MINESWEEPER (bit of an omission that)
- ·!3DMine application sprite improved
- ·Now doesn't change from 640x480 <n>Hz to mode 27 on a Risc PC -
- hence the monitor doesn't re-sync every time the game is re-
- started; also changed mode handling on errors to go into the
- current mode (which will always be okay) instead of 27 or 0
-
- ·Help file updated December 15th to correct typos and improve
- the clarity of the instructions for changing MDFs
-
- ·Help file updated January 10th 1995 to correct and improve
- stereogram and provide instructions for people without editors;
- application sprite also improved again - happy new year!
-
- ·Help file updated January 28th - whoops, got the stereogram
- backwards (don't believe I didn't notice)!
-
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- Boring bit
- ~~~~~~ ~~~
- As the author of this program, I have legal say in what you may
- do with it. As such, I don't really mind what you do to it for
- your own use. However, should it be passed on to anyone I would
- ask that it be passed on in its original form, with all the
- original files (at least this !Help file, the !Run file, the
- !Sprites file, the LeadEdSrc and SerPort/JS joystick files, the
- monitor defition files in the 3DMMDF directory - AKF50 3DM,
- AKF52 3DM, AKF60 3DM and AKF85 3DM - and the !RunImage itself)
- present and unchanged. If you wish to let an improvement be
- distributed, please mail me with the suggested changes so that
- they can be officially implemented in the next version, since I
- would like the program to maintain some standard form when it
- first reaches people.
-
- You may distribute this program as you wish, with the constraint
- that it may not be distributed for money other than the price of
- the medium on which it is supplied; this game is public domain
- and I do not give permission for it to be sold.
-
- I take no responsibility for any damage caused by this software
- or addiction (unlikely) to it. The program was virus-free when
- it left me; I am not responsible for its state when you received
- it.
-
- This program is NOT shareware. It IS free software. However, if
- anybody wishes to send some money to the author (who is an
- impoverished student) because they enjoyed the game so much,
- then it will be gratefully accepted. I will willingly provide a
- copy of the most recent version to anyone who requests it, so
- long as my costs are covered. Having said that, I have no plans
- for a later version than this, except for debugging.
-
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- Anybody being critical of my programming: yes I know the way I
- plot the grid is a little slow, but it is not worth optimizing
- it properly (eg by writing custom circle drawing routines & by
- writing direct to the z-buffer, rather than using a sprite for
- each cell and using a shadow screen mask in the buffer-writing
- routine). Look on the bright side: until I wrote version 1.16,
- I was using CIRCLE and CIRCLEFILL instead of sprite plots. The
- buffer is there so that calculation of which cell is under the
- pointer is responsive enough, since real-time techniques which
- don't use buffers would require much more processing power, or
- at best could be inaccurate without a considerable increase in
- the complexity of the code. This would probably be more effort
- than it is worth, at least as far as I am concerned.
-
- To purists: my 'z-buffer' isn't actually a z-buffer, but it is
- used in a related way, so it seemed like a suitable name.
-
- Apologies for any characters which appear incorrectly on early
- machines when reading this help file; I'm afraid you will have
- to upgrade to get the full effect. :-)
-
- Please report any bugs or suggestions which wouldn't take long
- to implement (I don't have much time on my hands just now) to:
-
- Andrew Garrard
- 25 Millfield
- Eye, Suffolk
- IP23 7DE
-
- or, preferably, AWG1000@phx.cam.ac.uk or AWG1000@cus.cam.ac.uk
- if it's before the end of June 1995.
-
- I dedicate this program to my best friend and fiancée, Stephanie
- Keele. It was her addiction to !Mine which started me on this
- project, and I am very thankful that she withstood me being
- antisocial by programming at her. I am also grateful for the
- suggestions she has given on the user interface, and assistance
- she provided with debugging, and for her being so generally
- wonderful. It's just a pity that she still prefers !Mine to
- !3DMine. (*SIGH*) :-(
-
-
-
-
-
-
- . . , . , . . .
- '·.··'··.' \.··'··./ '.··'··.·'
- : ` ’ : : ' ’ : : ' ' :
- -: • :- -: • :- -: • :-
- : .: : . : : . :
- .··.: ..·. /·.: ..·\ ,·:. ..··.
- ': ' : ' :
-
-
-
-
-
- Gratuitous stereogram - supposedly of mines
-
- Too see this stereogram, place your nose close to your screen
- and try to look at the left hand mine with your left eye, and
- the centre mine with your right eye (or the centre and right
- hand mines, respectively). Try to get the circular outlines
- of the mines to overlap by pulling your head back slowly. If
- you can do this, you should get the illusion that the •
- characters stick out of the mines towards you as spikes, as
- will other 'points' - there are also some 'points' sticking
- away from you. Apparently about 50% of people can see this kind
- of illusion, so if it doesn't work for you, sorry. Well, it's
- not like you paid for it or anything. :-)
-
- If this scrolled by too fast to read, hold down <Ctrl> to
- slow down scrolling and <Ctrl>+<Shift> to stop the text.
- Alternatively and preferably, load the file into an editor
- (e.g. !Edit in the RISCOS 3 Apps folder or on the RISCOS 2
- applications discs, or !Zap - in the public domain).
- If you do not have an editor available, try this:
- Make sure the filer window containing !3DMine is open.
- Press F12 to get a command line prompt and type:
- TYPE <directory>.!3DMine.!Help
- where <directory> is the text in that window's title bar.
- When you have read the text, press <Return> to finish.